The present invention provides a methodology to improve digital pre-distortion for correcting amplifier distortion.
FIG. 1 illustrates the prior art architecture for digital pre-distortion to correct amplifier distortion. As shown, an input signal (e.g., a radio frequency (RF) input signal) is input to a pre-distorter 10. The pre-distorter 10 multiplies the input signal with complex weight vector w supplied by a weight estimator 12. The pre-distorted input signal d(n) is supplied to an amplifier 14, which amplifies the pre-distorted input signal d(n) to obtain an output signal x(n) (e.g., an RF output signal) corrected for amplifier distortion.
The weight estimator 12 models the amplifier distortion as a least-squares estimation problem with multi-channels and equal weight lengths. The weight estimator 12 collects digital samples at both the input and output of the amplifier and estimates the parameters of the amplifier non-linear distortion model. With these modeled parameters, the weight estimator 12′ generates weights that the pre-distorter 10 uses to pre-distort the input signal to counter the amplifier distortions.
Operation of the weight estimator 12 will now be described in greater detail. As shown in FIG. 1, d(n) denotes the amplifier (complex) input signal and x(n) denotes the amplifier (complex) output signal, at time n.
The amplifier output signal x(n) is expanded into a column vector of K=5 magnitude-polynomial terms or multi-channels, to model the amplifier nonlinearity distortion:
            x      _        ⁡          (      n      )        =            [                                                  x              ⁡                              (                n                )                                                                                                                                          x                  ⁡                                      (                    n                    )                                                                              ⁢                              x                ⁡                                  (                  n                  )                                                                                                                                                                                x                    ⁡                                          (                      n                      )                                                                                        2                            ⁢                              x                ⁡                                  (                  n                  )                                                                                                                                                                                x                    ⁡                                          (                      n                      )                                                                                        3                            ⁢                              x                ⁡                                  (                  n                  )                                                                                                                                                                                x                    ⁡                                          (                      n                      )                                                                                        4                            ⁢                              x                ⁡                                  (                  n                  )                                                                        ]        =                  [                                            1                                                                                                            x                  ⁡                                      (                    n                    )                                                                                                                                                                                                  x                    ⁡                                          (                      n                      )                                                                                        2                                                                                                                                                x                    ⁡                                          (                      n                      )                                                                                        3                                                                                                                                                x                    ⁡                                          (                      n                      )                                                                                        4                                                    ]            ⁢              x        ⁡                  (          n          )                    Note that variables are underscored or bolded to represent a vector or matrix. xH(n) is used to denote the conjugate transpose of vector x(n) and xT(n) is used to denote the transpose of vector x(n). Also, x*(n) is used to denote the complex conjugate of x(n).
The amplifier output signal x(n) is a complex number whereas the magnitude-polynomial multipliers are positive real numbers. This means that these K=5 terms in vector x(n) are the scaled versions of the amplifier output signal x(n).
FIG. 2 illustrates the scaled relationship of the 5 elements in vector x(n), where x(n)=0.2+i0.8. To model the amplifier distortion, the impact of all the L=6 delayed versions of x(n) is considered, including the vector x(n) itself as shown below:
                    x        _            ⁡              (                  n          -          l                )              =                  [                                                            x                ⁡                                  (                                      n                    -                    l                                    )                                                                                                                                                                x                    ⁡                                          (                                              n                        -                        l                                            )                                                                                        ⁢                                  x                  ⁡                                      (                                          n                      -                      l                                        )                                                                                                                                                                                                          x                      ⁡                                              (                                                  n                          -                          l                                                )                                                                                                  2                                ⁢                                  x                  ⁡                                      (                                          n                      -                      l                                        )                                                                                                                                                                                                          x                      ⁡                                              (                                                  n                          -                          l                                                )                                                                                                  3                                ⁢                                  x                  ⁡                                      (                                          n                      -                      l                                        )                                                                                                                                                                                                          x                      ⁡                                              (                                                  n                          -                          l                                                )                                                                                                  4                                ⁢                                  x                  ⁡                                      (                                          n                      -                      l                                        )                                                                                      ]            =                        [                                                    1                                                                                                                            x                    ⁡                                          (                                              n                        -                        l                                            )                                                                                                                                                                                                                            x                      ⁡                                              (                                                  n                          -                          l                                                )                                                                                                  2                                                                                                                                                                    x                      ⁡                                              (                                                  n                          -                          l                                                )                                                                                                  3                                                                                                                                                                    x                      ⁡                                              (                                                  n                          -                          l                                                )                                                                                                  4                                                              ]                ⁢                  x          ⁡                      (                          n              -              l                        )                                ,          ⁢      l    =    0    ,  1  ,  …  ⁢          ,      L    -    1.  Here, K=5 is the number of multi-channels (or magnitude-polynomial terms) and L=6 is the total number of delayed versions in each multi-channel. As each of these terms has an associated complex weight (or coefficient) multiplier, the total number of weights is M=KL=30. The cross-polynomial term will be considered below.
These 6 vectors are concatenated into an M×1 vector, as the multi-channel vector u(n) for the least-square estimation model, and a corresponding M×1 weight vector w as shown below:
            u      _        ⁡          (      n      )        =            [                                                                  x                _                            ⁡                              (                n                )                                                                                                        x                _                            ⁡                              (                                  n                  -                  1                                )                                                                                                        x                _                            ⁡                              (                                  n                  -                  2                                )                                                                                                        x                _                            ⁡                              (                                  n                  -                  3                                )                                                                                                        x                _                            ⁡                              (                                  n                  -                  4                                )                                                                                                        x                _                            ⁡                              (                                  n                  -                  5                                )                                                        ]        =                            [                                                                                          u                    1                                    ⁡                                      (                    n                    )                                                                                                                                            u                    2                                    ⁡                                      (                    n                    )                                                                                                                                            u                    3                                    ⁡                                      (                    n                    )                                                                                                                                            u                    4                                    ⁡                                      (                    n                    )                                                                                                      ⋮                                                                                                          u                                          M                      -                      1                                                        ⁡                                      (                    n                    )                                                                                                                                            u                    M                                    ⁡                                      (                    n                    )                                                                                ]                ⁢                                  ⁢        and        ⁢                                  ⁢                  w          _                    =                        [                                                                      w                  1                                                                                                      w                  2                                                                                                      w                  3                                                                                                      w                  4                                                                                    ⋮                                                                                      w                                      M                    -                    1                                                                                                                        w                  M                                                              ]                .            Notice that output signal vector u(n) can be expressed in two ways, either in terms of magnitude-polynomial vectors x(n−l) or individual elements ui(n).
The estimate of the desired amplifier input signal, at time n, is given as:
                    w        _            T        ·                  u        _            ⁡              (        n        )              =            ∑              i        =        1            M        ⁢                  w        i            ·                                    u            i                    ⁡                      (            n            )                          .            
The least-squares estimation problem is to find the optimal weights w that minimize the sum of error squares, given N pairs of actual amplifier input signal d(n) and vector u(n), n=1, 2, . . . , N:
            ∑              n        =        1            N        ⁢                                                d            ⁡                          (              n              )                                -                                                    w                _                            T                        ·                                          u                _                            ⁡                              (                n                )                                                                2        =            ∑              n        =        1            N        ⁢                                                d            ⁡                          (              n              )                                -                                    ∑                              i                =                1                            M                        ⁢                                          w                i                            ·                                                u                  i                                ⁡                                  (                  n                  )                                                                                2      
The optimal weights solution for the least-squares estimation problem satisfies the following matrix equation:wLS=R−1·vwhere R is the M×M correlation matrix and v is the M×1 cross-correlation vector defined as:
            R      _        =                  ∑                  n          =          1                N            ⁢                        R          _                ⁡                  (          n          )                      where                    R        _            ⁡              (        n        )              =                                                      u              _                        ⁡                          (              n              )                                ·                                                    u                _                            H                        ⁡                          (              n              )                                      ⁢                                  ⁢                  and                ⁢                                  ⁢                  v          _                    =                        ∑                      n            =            1                    N                ⁢                              v            _                    ⁡                      (            n            )                                where                    v        _            ⁡              (        n        )              =                  d        ⁡                  (          n          )                    ·                                    u            _                    ⁡                      (            n            )                          .            
From the definition of the correlation matrix, it can be seen that matrix R(n)=└ri,j(n)┘ is symmetric, i.e., ri,j(n)=r*i,j(n), 1≦i,j≦M. Accordingly, as is well-known only the upper triangular elements need to be computed and then used for the other elements. The total number of elements is 465 (=M·(M+1)/2) out of 900 elements.
Since the vector u(n) consists of 6 delayed versions of vector x(n), so do the correlation matrix and cross-correlation vector. The correlation matrix can be divided into the following 6×6 blocks of correlation values:
            R      _        ⁢                  ⁢          (      n      )        =      [                                                                      R                _                                            1                ,                1                                      ⁡                          (              n              )                                                                                          R                _                                            1                ,                2                                      ⁡                          (              n              )                                                                                          R                _                                            1                ,                3                                      ⁡                          (              n              )                                                                                          R                _                                            1                ,                4                                      ⁡                          (              n              )                                                                                          R                _                                            1                ,                5                                      ⁡                          (              n              )                                                                                          R                _                                            1                ,                6                                      ⁡                          (              n              )                                                                                                      R                _                                            2                ,                1                                      ⁡                          (              n              )                                                                                          R                _                                            2                ,                2                                      ⁡                          (              n              )                                                                                          R                _                                            2                ,                3                                      ⁡                          (              n              )                                                                                          R                _                                            2                ,                4                                      ⁡                          (              n              )                                                                                          R                _                                            2                ,                5                                      ⁡                          (              n              )                                                                                          R                _                                            2                ,                6                                      ⁡                          (              n              )                                                                                                      R                _                                            3                ,                1                                      ⁡                          (              n              )                                                                                          R                _                                            3                ,                2                                      ⁡                          (              n              )                                                                                          R                _                                            3                ,                3                                      ⁡                          (              n              )                                                                                          R                _                                            3                ,                4                                      ⁡                          (              n              )                                                                                          R                _                                            3                ,                5                                      ⁡                          (              n              )                                                                                          R                _                                            3                ,                6                                      ⁡                          (              n              )                                                                                                      R                _                                            4                ,                1                                      ⁡                          (              n              )                                                                                          R                _                                            4                ,                2                                      ⁡                          (              n              )                                                                                          R                _                                            4                ,                3                                      ⁡                          (              n              )                                                                                          R                _                                            4                ,                4                                      ⁡                          (              n              )                                                                                          R                _                                            4                ,                5                                      ⁡                          (              n              )                                                                                          R                _                                            4                ,                6                                      ⁡                          (              n              )                                                                                                      R                _                                            5                ,                1                                      ⁡                          (              n              )                                                                                          R                _                                            5                ,                2                                      ⁡                          (              n              )                                                                                          R                _                                            5                ,                3                                      ⁡                          (              n              )                                                                                          R                _                                            5                ,                4                                      ⁡                          (              n              )                                                                                          R                _                                            5                ,                5                                      ⁡                          (              n              )                                                                                          R                _                                            5                ,                6                                      ⁡                          (              n              )                                                                                                      R                _                                            6                ,                1                                      ⁡                          (              n              )                                                                                          R                _                                            6                ,                2                                      ⁡                          (              n              )                                                                                          R                _                                            6                ,                3                                      ⁡                          (              n              )                                                                                          R                _                                            6                ,                4                                      ⁡                          (              n              )                                                                                          R                _                                            6                ,                5                                      ⁡                          (              n              )                                                                                          R                _                                            6                ,                6                                      ⁡                          (              n              )                                            ]  
Block Ri,j(n) is a 5×5 correlation matrix between vectors x(n−i+1) and x(n−j+1) such as expressed below:Ri,j(n)=x(n−i+1)·xH(n−j+1), 1≦i,j≦5.
Most of the elements in matrix R(n) are the same as elements in matrix R(n−1), as shown below:Ri+1,j+1(n)=Ri,j(n−1), 1≦i,j≦5.This is illustrated graphically in FIG. 3.
The new elements in R(n) that are not included in R(n−1) are the top row of blocks and the left most column of blocks. The top row of blocks is:x(n)·uH(n)=[R1,1(n)R1,2(n)R1,3(n)R1,4(n)R1,5(n)R1,6(n)].
The first block R1,1(n) is a diagonal block with symmetric elements and the remaining blocks are off-diagonal blocks. Hence, only the 140 elements in the first block R1,1(n) need to be computed.
From the symmetry property, only the 21 upper triangular blocks need to be considered. These blocks can be grouped into 2 types, diagonal and off-diagonal blocks, where the blocks in each type have the same structure as set forth in table 1 below:
TABLE 1BlocksExampleType #in this typeDim#Expression1Diagonal blocks:5 × 56R1,1(n) = x(n) · xH(n)R1,1(n), . . . , R6,6(n)2Off-diagonal blocks:5 × 515R1,2(n) = x(n) · xH(n − 1)R1,2(n), . . . , R5,6(n)
The symmetry property may be used to compute only 465 elements of the correlation matrix out of 900 elements. Each correlation value is computed using complex-complex multiplication with 4-multiplications and 2-additions. The complexity is summarized in table 2 below:
TABLE 2Operations#Mult#Add465 complex-complex1860930multiplications
Also, the delayed version property may be used to reduce the computation complexity where only 140 correlation values are computed. Each correlation value is computed using complex-complex multiplication with 4-multiplications and 2-additions. The complexity is summarized in table 3 below:
TABLE 3Operations#Mult#Add140 complex-complex560280multiplications